package com.mzy.datepackage.M2022.Aug.thirty_first.service.tasks;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.mzy.datepackage.M2022.Aug.thirty_first.service.tasks.file_sync.Filter;
import com.mzy.datepackage.M2022.Aug.thirty_first.service.tasks.file_sync.Resource;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.Valid;

/**
 * 文件同步
 * */
@Data
@ApiModel(value = "文件同步服务")
public class FileSync {

    /**
     * 服务id,对应FileSyncInfo中的out_task_id/in_task_id
     * */
    @ApiModelProperty(value = "服务id")
    private Integer id;
    /**
     * 服务名称
     * */
    @ApiModelProperty(value = "服务名称")
    private String name;
    /**
     * 服务描述
     * */
    @ApiModelProperty(value = "服务描述")
    private String descr;
    /**
     * 方向 nt2t/t2nt...
     * */
    @ApiModelProperty(value = "传输方向,nt2t/t2nt")
    private String direction;
    /**
     * 任务类型
     * 文件同步类型，可分为localftp(本地ftp)，localsmb(本地smb)，localnfs(本地nfs)，ftp(远程ftp)
     * */
    @ApiModelProperty(value = "任务类型，可分为localftp(本地ftp)，localsmb(本地smb)，localnfs(本地nfs)，ftp(远程ftp)")
    private String type;
    /**
     * 同步间隔时间，毫秒单位
     * */
    @ApiModelProperty(value = "同步间隔时间，单位毫秒")
    private int interval = 3000;
    /**
     * 服务状态，stop停止，run表示运行中
     * */
    @ApiModelProperty(value = "服务状态，stop停止，run表示运行中")
    private String state;
    /**
     * 数据资源
     * */
    @Valid
    private Resource resource;

    /**
     * 所有的过滤项
     * */
    private Filter filter;
    /**
     * 子目录
     * */
    @ApiModelProperty(value = "子目录")
    private String subdirectory = "/";

    /**
     * 通道选择
     * */
    @ApiModelProperty(value = "通道名称")
    private String channel;

    /**
     * 同步类型 1>本地，2>双向，3>单向，对应FileSyncInfo中的
     * */
    @ApiModelProperty(value = "同步类型 1>本地，2>双向，3>单向，对应FileSyncInfo中的")
    private int syncModel = 3;

    /**
     * 同时传输的线程数，默认值5，对应FileSyncInfo中的tools
     * */
    @ApiModelProperty(value = "同时传输的线程数，默认值5")
    private int threadCount = 5;

    /**
     * 连接时使用的字符集，默认值utf-8，对应FileSyncInfo中的iocharset
     * */
    @ApiModelProperty(value = "连接时使用的字符集，默认值utf-8")
    private String charset = "utf-8";

    /**
     * 同步模式，copy或del（复制模式或剪切模式）,默认值 del；对应FileSyncInfo中的opt_after_sync
     * */
    @ApiModelProperty(value = "同步模式，copy或del")
    private String optAfterSync = "del";

    /**
     * 是否为被动模式，true为被动，false为主动，作用于远程ftp
     * */
    @ApiModelProperty(value = "是否为被动模式，true为被动，false为主动")
    private boolean isPsvn = true;

    /**
     * ftp登录超时时间,默认值60000
     * */
    @ApiModelProperty(value = "ftp登录超时时间,默认值60000")
    private int connectionTimeOut = 60000;

    /**
     * 数据传输超时时间,默认值60000
     * */
    @ApiModelProperty(value = "数据传输超时时间,默认值60000")
    private int dataTimeOut = 60000;

    /**
     * 异常日志是否入库，默认值false
     * */
    @ApiModelProperty(value = "异常日志是否入库，默认值false")
    private boolean isPutInStorage = false;

    /**
     * 流量限制，单位b/s,-1为不限制，默认值 -1
     * */
    @ApiModelProperty(value = "流量限制，单位b/s,-1为不限制，默认值 -1")
    private int flowLimit = -1;

    /**
     * 是否开启md5校验，默认值false
     * */
    @ApiModelProperty(value = "是否开启md5校验，默认值false")
    private boolean isMd5 = false;

    /**
     * 是否进行流量实时统计,默认值false
     * */
    @ApiModelProperty(value = "是否进行流量实时统计,默认值false")
    private boolean isFlowStatistics = false;
    /**
     * 敏感文件操作，保留：0；删除：1；转移：2；
     * */
    @ApiModelProperty(value = "敏感文件操作，保留：0；删除：1；转移：2；")
    private int filterAfterOpt = 0;
    /**
     * 敏感文件操作，保留模式下，是否需要将文件复制到平台上，复制：1；不复制：0；
     * */
    @ApiModelProperty(value = "敏感文件操作，保留模式下，是否需要将文件复制到平台上，复制：1；不复制：0；")
    private int copyMove = 0;

    /**
     * 系统用户组
     * */
    @JsonIgnore
    private String systemGroup;

    /**
     * 系统用户
     * */
    @JsonIgnore
    private String systemUser;

}
